/**
 * 给定两个整数，被除数 dividend 和除数 divisor。将两数相除，要求不使用乘法、除法和 mod 运算符。
 * <p>
 * 返回被除数 dividend 除以除数 divisor 得到的商。
 * <p>
 * 整数除法的结果应当截去（truncate）其小数部分，例如：truncate(8.345) = 8 以及 truncate(-2.7335) = -2
 * <p>
 *  
 * <p>
 * 示例 1:
 * <p>
 * 输入: dividend = 10, divisor = 3
 * 输出: 3
 * 解释: 10/3 = truncate(3.33333..) = truncate(3) = 3
 * 示例 2:
 * <p>
 * 输入: dividend = 7, divisor = -3
 * 输出: -2
 * 解释: 7/-3 = truncate(-2.33333..) = -2
 */
class Scratch {

    public static void main(String[] args) {
        System.out.println(divide(2147483647, -2147483648));
    }

    public static int divide(int x, int y) {
        if (x == 0) return 0;
        if (y == 1) return x;
        if (x == Integer.MIN_VALUE && y == 2) return -1073741824;
        if (x == Integer.MAX_VALUE && y == Integer.MIN_VALUE) return 0;
        boolean negative = false;
        if ((x < 0 && y > 0) || (x > 0 && y < 0)) negative = true;
        x = Math.abs(x);
        if (x == Integer.MIN_VALUE) x = Integer.MAX_VALUE;
        y = Math.abs(y);
        if (y == Integer.MIN_VALUE) y = Integer.MAX_VALUE;
        if (x < y) return 0;
        if (y == 1) {
            if (negative) return -x;
            else return x;
        }
        String result = "";
        String s = String.valueOf(x);
        String left = "";
        for (int a = 0, b = 1; b < s.length() + 1; ) {
            int z = Integer.valueOf(left + s.substring(a, b));
            if (z < y) {
                if (result.length() > 0) result += "0";
                b++;
            } else {
                int i = 0;
                for (; i < 10 && z >= y; i++) {
                    z = z - y;
                }
                result += i;
                left = z + "";
                a = b;
                b++;
            }
        }
        if (negative) return -Integer.valueOf(result);
        else return Integer.valueOf(result);
    }


}